package com.ruoyi.zxjd.work.mapper;

import com.ruoyi.zxjd.work.domain.WorkProgress;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * 工作进度Mapper接口
 * 
 * @author lcc
 * @date 2021-01-26
 */
public interface WorkProgressMapper 
{
    /**
     * 查询工作进度
     * 
     * @param progressId 工作进度ID
     * @return 工作进度
     */
    public WorkProgress selectWorkProgressById(Long progressId);

    /**
     * 查询工作进度列表
     * 
     * @param workProgress 工作进度
     * @return 工作进度集合
     */
    public List<WorkProgress> selectWorkProgressList(WorkProgress workProgress);

    /**
     * 新增工作进度
     * 
     * @param workProgress 工作进度
     * @return 结果
     */
    public int insertWorkProgress(WorkProgress workProgress);

    /**
     * 修改工作进度
     * 
     * @param workProgress 工作进度
     * @return 结果
     */
    public int updateWorkProgress(WorkProgress workProgress);

    /**
     * 删除工作进度
     * 
     * @param progressId 工作进度ID
     * @return 结果
     */
    public int deleteWorkProgressById(Long progressId);

    /**
     * 批量删除工作进度
     * 
     * @param progressIds 需要删除的数据ID
     * @return 结果
     */
    public int deleteWorkProgressByIds(String[] progressIds);

    /**
     * 批量删除填报表单
     * 
     * @param progressIds 需要删除的数据ID
     * @return 结果
     */
    public int deleteWorkFormByIds(String[] progressIds);

    /**
     * 批量修复工作进度状态
     */
	public int updateWorkProgressStatusByIds(@Param("progressIds") String[] progressIds,@Param("status")  String status);

    /**
     * 通过工作安排ID查询工作进度列表
     * 
     * @param arrangeId 工作安排ID
     * @param related  是否关联查询
     * @return 工作进度列表
     */
	public List<WorkProgress> selectWorkProgressListByArrangeId(@Param("arrangeId") Long arrangeId,@Param("related") Boolean related);

    /**
     * 查询工作安排的执行人数
     * @return
     */
	public List<Map<String, Object>> selectTotalGroupByArrangId();

    /**
     * 根据工作任务id, 查询当前用户的下一份填报状态为带填报的同类型的工作任务
     * @param progressId
     * @return
     */
    Long selectNextProgressIdToDeal(@Param("progressId") Long progressId);
}
